{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-2-b0ffac263758>:1: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From E:\\Anaconda2\\envs\\python3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From E:\\Anaconda2\\envs\\python3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\base.py:252: _internal_retry.<locals>.wrap.<locals>.wrapped_fn (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use urllib or similar directly.\n",
      "Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.\n",
      "WARNING:tensorflow:From E:\\Anaconda2\\envs\\python3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.\n",
      "WARNING:tensorflow:From E:\\Anaconda2\\envs\\python3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From E:\\Anaconda2\\envs\\python3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(\"./\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")\n",
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.699839, the validation accuracy is 0.8754\n",
      "after 200 training steps, the loss is 0.0718808, the validation accuracy is 0.9026\n",
      "after 300 training steps, the loss is 0.344215, the validation accuracy is 0.924\n",
      "after 400 training steps, the loss is 0.266465, the validation accuracy is 0.923\n",
      "after 500 training steps, the loss is 0.145307, the validation accuracy is 0.9322\n",
      "after 600 training steps, the loss is 0.206238, the validation accuracy is 0.9434\n",
      "after 700 training steps, the loss is 0.264204, the validation accuracy is 0.9524\n",
      "after 800 training steps, the loss is 0.225746, the validation accuracy is 0.942\n",
      "after 900 training steps, the loss is 0.102547, the validation accuracy is 0.9542\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9548\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#在准确率上从一开始的快速上升到最后趋于一个稳定值"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
